﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace SiteAgle.Models
{
    /// <summary>
    /// 
    /// </summary>
    public class DaoGrupoTrabalho
    {
        /// <summary>
        /// Salvars the specified grupo trabalho.
        /// </summary>
        /// <param name="grupoTrabalho">The grupo trabalho.</param>
        public GrupoTrabalho Salvar(GrupoTrabalho grupoTrabalho) 
        {
            if(grupoTrabalho.Id>0){

            }
            else{
            DataAccessSingleton.Entities.AddToGrupoTrabalho(grupoTrabalho);
            }
            DataAccessSingleton.Entities.SaveChanges();
            return grupoTrabalho;
        }

        /// <summary>
        /// Obters the por ID.
        /// </summary>
        /// <param name="ID">The ID.</param>
        /// <returns></returns>
        public GrupoTrabalho ObterPorID(int ID)
        {
            return DataAccessSingleton.Entities.GrupoTrabalho.Where(g => g.Id.Equals(ID)).FirstOrDefault();
        }

        /// <summary>
        /// Listars this instance.
        /// </summary>
        /// <returns></returns>
        public IList<GrupoTrabalho> listar()
        {
            return DataAccessSingleton.Entities.GrupoTrabalho.ToList();
        }
        /// <summary>
        /// Excluirs the specified grupo trabalho.
        /// </summary>
        /// <param name="grupoTrabalho">The grupo trabalho.</param>
        public void Excluir(GrupoTrabalho grupoTrabalho)
        {
            DataAccessSingleton.Entities.GrupoTrabalho.DeleteObject(grupoTrabalho);
            DataAccessSingleton.Entities.SaveChanges();
        }

        public static Projeto GetGrupoTrabalhoForSprint(int id)
        {
            return DataAccessSingleton.Entities.Sprint.Where(w => w.Id == id).FirstOrDefault().Projeto;
        }

        public decimal GetNaoIniciadoForUser(int idProjeto, int idUser)
        {
            int totalValue = (from tarefas in DataAccessSingleton.Entities.Tarefa
                              where tarefas.Sprint.Projeto.Id == idProjeto && tarefas.Usuario.Id == idUser && tarefas.StatusTarefas.Id == 1
                              select tarefas).Count();
            int total = (from tarefas in DataAccessSingleton.Entities.Tarefa
                         where tarefas.Sprint.Projeto.Id == idProjeto && tarefas.Usuario.Id == idUser
                         select tarefas).Count();

            decimal percentual = 0;
            if (total != 0)
            {
                percentual = (totalValue * 100) / total;
            }

            return percentual;
        }
        public decimal GetIniciadoForUser(int idProjeto, int idUser)
        {
            int totalValue = (from tarefas in DataAccessSingleton.Entities.Tarefa
                              where tarefas.Sprint.Projeto.Id == idProjeto && tarefas.Usuario.Id == idUser && tarefas.StatusTarefas.Id == 2
                              select tarefas).Count();
            int total = (from tarefas in DataAccessSingleton.Entities.Tarefa
                         where tarefas.Sprint.Projeto.Id == idProjeto && tarefas.Usuario.Id == idUser
                         select tarefas).Count();

            decimal percentual = 0;
            if (total != 0)
            {
                percentual = (totalValue * 100) / total;
            }

            return percentual;
        }
        public decimal GetImpedidoForUser(int idProjeto, int idUser)
        {
            int totalValue = (from tarefas in DataAccessSingleton.Entities.Tarefa
                              where tarefas.Sprint.Projeto.GrupoTrabalho.Id == idProjeto && tarefas.Usuario.Id == idUser && tarefas.StatusTarefas.Id == 3
                              select tarefas).Count();
            int total = (from tarefas in DataAccessSingleton.Entities.Tarefa
                         where tarefas.Sprint.Projeto.GrupoTrabalho.Id == idProjeto && tarefas.Usuario.Id == idUser
                         select tarefas).Count();

            decimal percentual = 0;
            if (total != 0)
            {
                percentual = (totalValue * 100) / total;
            }

            return percentual;
        }
        public decimal GetConcluidoForUser(int idProjeto, int idUser)
        {
            int totalValue = (from tarefas in DataAccessSingleton.Entities.Tarefa
                              where tarefas.Sprint.Projeto.Id == idProjeto && tarefas.Usuario.Id == idUser && tarefas.StatusTarefas.Id == 4
                              select tarefas).Count();
            int total = (from tarefas in DataAccessSingleton.Entities.Tarefa
                         where tarefas.Sprint.Projeto.Id == idProjeto && tarefas.Usuario.Id == idUser
                         select tarefas).Count();

            decimal percentual = 0;
            if (total != 0)
            {
                percentual = (totalValue * 100) / total;
            }

            return percentual;
        }
      
    }
}